package com.example.houseman.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 
 * </p>
 *
 * @author 龚梦
 * @since 2021-04-02
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class TSfTermination implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 商户ID
     */
    private Long businessId;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门编号
     */
    private String deptNo;

    /**
     * 解约协议编号
     */
    private String sfTerminationNo;

    /**
     * 外部协议编号（线下解约协议号）
     */
    private String outTerminationNo;

    /**
     * 收房合同id
     */
    private Long sfContractId;

    /**
     * 收房合同号
     */
    private String sfContractNo;

    /**
     * 楼盘ID
     */
    private Long premiseId;

    /**
     * 小区(使用楼盘名)
     */
    private String premiseName;

    /**
     * 房产编号
     */
    private String houseId;

    /**
     * 房产信息
     */
    private String houseName;

    /**
     * 产权地址
     */
    private String cqAddress;

    /**
     * 房产证书编号
     */
    private String houseZsNo;

    /**
     * 业主姓名
     */
    private String ownerName;

    /**
     * 业主手机号
     */
    private String ownerMobile;

    /**
     * 签约人(甲方)
     */
    private String signUserName;

    /**
     * 签约人手机号
     */
    private String signUserMobile;

    /**
     * 物业交割时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date wyjgDate;

    /**
     * 解约类型（1：合同到期）（2：业主提前解约）（3：我方退租解约）（4：其他）
     */
    private Integer terminationType;

    /**
     * 解约类型其他： 解约类型为其他的时后保存使用
     */
    private Integer terAgrType;

    /**
     * 结算合计,为负数的时候，应退（字段废除）
     */
    private BigDecimal accountsReceivable;

    /**
     * 结算合计，为正应收， 为负数的时候是应退
     */
    private BigDecimal finalStatement;

    /**
     * 解约日期（协议签订日期，暂时同录入日期一样）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date terminationDate;

    /**
     * 合同实际截止日（预留字段，暂时用解约日期）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date realTerminationDate;

    /**
     * 审核日期（目前无审核，暂时用录入日期）
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date auditDate;

    /**
     * 录入人ID
     */
    private Long inputUserId;

    /**
     * 录入人姓名
     */
    private String inputUserName;

    /**
     * 录入日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date inputDate;

    /**
     * 备注
     */
    private String remark;

    /**
     * 预留字段1
     */
    private BigDecimal reserve1;

    /**
     * 预留字段2
     */
    private Integer reserve2;

    /**
     * 预留字段3
     */
    private String reserve3;

    /**
     * 预留字段4
     */
    private String reserve4;

    /**
     * 预留字段5
     */
    private String reserve5;

    /**
     * 删除标识 0：未删除， 1：删除
     */
    private Boolean delFlg;

    /**
     * 创建用户id
     */
    private Long createUserid;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新用户id
     */
    private Long updateUserid;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @TableField(exist = false)
    private List<TSfFinalStatementDetail> sfFinalStatementDetailList;

    @TableField(exist = false)
    private List<TSfFinalStatementDetail>sfFinalStatementDetailLists;
}
